home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / pascal / bignum.exe / ODDS.PAS < prev   
Pascal/Delphi Source File  |  1988-12-30  |  2KB  |  84 lines

  1. uses bignum,crt;
  2. var
  3.    n,r,code: integer;
  4.    c,f1,f2,f3,tot,per: string;
  5.    fn,fr: string;
  6. begin
  7. c :='';
  8. clrscr;
  9.  
  10. textCOLOR (7);gotoxy(32,1);write('ODDS CALCULATOR');textCOLOR (7);
  11. gotoxy(1,2);write('THIS PROGRAM CAN HELP YOU CALCULATE THE ODDS OF LOTTERIES OR OTHER EVENTS.  SAY ');
  12. gotoxy(1,3);write('THERE IS A LOTTERY WITH #''s RANGING FROM 1 TO 36.  YOU ENTER 36 FOR # OF OB-    ');
  13. gotoxy(1,4);write('JECTS.  IF YOU MUST PICK 6 #''s OUT OF THE 36, YOU ENTER 6 WHEN THE COMPUTER ASKS');
  14. gotoxy(1,5);write('FOR # OF ITEMS PICKING FROM OBJECTS.  THE COMPUTER WILL TELL YOU HOW MANY TOTAL ');
  15. gotoxy(1,6);write('POSSIBLE CHOICES YOU HAVE AND THE ODDS AT GETTING THE RIGHT COMBINATION.');
  16. window(1,7,80,25);
  17. while (c <>'N') and (c <>'n') do
  18. begin
  19. writeln('');
  20. n :=1;
  21. code := 1;
  22.  
  23. {$I-}
  24. while (n<=1) or (code<>0) do
  25.    begin
  26.    write('# OF OBJECTS YOU MUST PICK FROM ?');
  27.    readln(n);
  28.    if (n>145) or (n<=1) then
  29.       begin
  30.          writeln('Must be from 2 to 145!');
  31.          sound(40);
  32.          delay(100);
  33.          nosound;
  34.          n := -1;
  35.       end;
  36.    code := ioresult;
  37. end;
  38. r := 0;
  39. code :=1;
  40.  
  41. while ((r >n) or (r<=0)) or (code<>0) do
  42.    begin
  43.    write('# OF ITEMS PICKING FROM OBJECTS ?');
  44.    readln(r);
  45.    if (r>n) or (r<=0) then
  46.       begin
  47.          writeln('Must be from 1 to ',n,'!');
  48.          sound(40);
  49.          delay(100);
  50.          nosound;
  51.          r := -1;
  52.       end;
  53.    code := ioresult;
  54. end;
  55. str(n,fn);
  56. str(r,fr);
  57. textcolor(21);
  58. writeln('Please wait---Calculating odds!');textcolor(7);
  59. if fn <> fr then
  60.    begin
  61.       f1 := fac(fn);
  62.       f2 := fac(fr);
  63.    end
  64. else
  65.    begin
  66.       f1 := fn;
  67.       f2 := fn;{equal, no factorial needed}
  68.    end;
  69.  
  70. f3 := fac(minus(fn,fr,true));
  71. tot := divide(f1,times(f2,f3,false),false,true);
  72. per := divide('1',tot,false,false);
  73. if length(per) >=253 then
  74.    per := copy (per,1,252);
  75. clrscr;
  76. writeln('');
  77. writeln('');
  78. write('TOTAL POSSIBLE COMBINATIONS WITH ',N,' OBJECTS PICKING ',R);
  79. writeln(' ITEMS=',TOT);
  80. writeln('ODDS AT PICKING THE CORRECT ITEMS FROM OBJECTS IN ONE GUESS=',times(per,'100',false),'%');
  81. write('CALCULATE MORE ODDS (Y/N)?');
  82. readln(c);
  83. end;
  84. end.